import request from '../plugins/axios.js'
import store from '../store/index.js'
import router from '../router/index.js'

export function login(data) {
  return request({
    method: 'POST',
    url: '/app/v1_0/authorizations',
    data,
    // 虽然axios没有这个配置项，但是咱们也可以根据自己的需求追加，只不过axios不认识
    errMsgMap: {
      400: '手机号或验证码错误'
    },
    notToken: true
  })
}

export function sendSMS(mobile) {
  return request({
    method: 'GET',
    url: `/app/v1_0/sms/codes/${mobile}`,
    // 虽然axios没有这个配置项，但是咱们也可以根据自己的需求追加，只不过axios不认识
    errMsgMap: {
      404: '手机号码不正确',
      429: '发送太频繁了，请稍后重试'
    },
    notToken: true
  })
}

// 刷新token
export function refreshToken() {
  return request({
    method: 'PUT',
    url: '/app/v1_0/authorizations',
    headers: {
      Authorization: 'Bearer ' + store.state.user.refresh_token
    },
    notToken: true
  })
    .then((res) => {
      // 如果刷新成功，就更新Vuex中的token
      store.commit('refreshToken', res.data.data.token)
      return res
    })
    .catch((reason) => {
      // 如果刷新token都没有成功，那么说明确实过期很久了，需要跳转到登录页面重新登录
      router.push('/login')
      throw reason
    })
}

export function getUserChannels() {
  return request({
    method: 'GET',
    url: '/app/v1_0/user/channels'
  })
}
